package cn.com.zzl.po;

import java.util.Date;

public class User {
    private Integer id;

    private String username;

    private Date birthday;

    private String sex;

    private String address;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username == null ? null : username.trim();
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex == null ? null : sex.trim();
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address == null ? null : address.trim();
    }

    /**
     * @Desc 重写父类Object的toString方法，好处是可以自定义打印顺序，
     *       直观看到该实体类的属性对应的属性值，格式是标准的map格式。
     * @return
     */
    @Override
    public String toString() {
        //方案一：自定义，好处是可以自定义排序，坏处是增加工作量。
        return "{id=" + id +
                ", username=" + username +
                ", birthday=" + birthday +
                ", sex=" + sex +
                ", address=" + address +"}";

        //方案二：javaBean转Map，好处是减少工作量，可以写到父类里被子类继承，稍微不好的就是无法排序。
        /*String mapString = "";
        try {
            mapString = MapUtil.javaBean2Map(this).toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return mapString;*/
    }

    /**
     * @Desc 重写父类Object的equals方法，
     *      好处是可以自定义判断实体对象是否相等的条件。
     * @param obj
     * @return
     */
    @Override
    public boolean equals(Object obj) {
        //如果为同一对象的不同引用，则相同
        if (this == obj){
            return true;
        }
        //如果传入的对象为空，则返回false
        if (obj == null){
            return false;
        }
        //如果两者属于不同的类型，不能相等
        if (getClass() != obj.getClass()){
            return false;
        }
        User other = (User) obj;
        return this.getId().equals(other.getId());
    }

}
